package com.zhdl.modules.prefiresys.entity;

import com.project.common.bean.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

/**
 * 探测器常规参数监测历史数据，数据变化才存储，记录开始变化的时间，下一次变化的时间
 *
 * @author ACodeYuan
 * @Description:
 * @date 2023/7/21 16:12
 * @Version Y-1.0
 */
@EqualsAndHashCode(callSuper = true)
@Data
@Entity
@Table(name = "detector_his_data")
public class DetectorHistoryData extends BaseEntity<DetectorHistoryData, String> {
    /**
     * ID
     */
    @Id
    @Column(length = 32)
    private String id;

    /**
     * 探测器ID
     */

    private String detectorId;

    /**
     * 防区ID
     */
    @Column(length = 32, nullable = false)
    private String areaId;

    /**
     * 当前状态发生的时间
     */
    @Column(nullable = false, columnDefinition = "datetime default current_timestamp")
    private String startTime;

    /**
     * 当前状态结束的时间，下一个状态发生的时间
     */
    @Column(nullable = false, columnDefinition = "datetime default current_timestamp")
    private String endTime;

    /**
     * 0x18 U8 探测器整机状态，整机状态，正常，预热，自检
     */
    private byte detectorStatus;

    /**
     * 0x19 U16 检测单元状态 bit0-主电源供电状态 bit1-检测试剂状态（异常描述为“液位低”）
     */

    private String detectorUnitState;

    /**
     * 0x19 U16 检测单元状态 bit0-主电源供电状态 bit1-检测试剂状态（异常描述为“液位低”）
     * 存储原始数字，方便统计设备故障数量，非0的都算设备故障
     * 0 表示所有设备都正常，不是0就认为设备故障
     */

    private Integer detectorUnitStateValue;

    /**
     * 0x40 U8 防区报警状态 0 正常；1 预警；2 三级报警；3 二级报警；4 一级报警；5 报警保持；
     */

    private byte alarmState;

    /**
     * 0xEB U8 各检测模块使能标志
     */

    private byte detectionModuleEnable;

    /**
     * 0x1A U8 各检测模块整体状态 0：正常 1：异常 bit0-微粒子检测模块 bit1-烟雾检测模块状态标识
     * 0 两个都正常
     * 1 微粒子检测模块异常
     * 2 烟雾检测模块异常
     * 3 两个都异常
     */

    private byte detectorModuleStatus;

    /**
     * 0x41 U32 1防区微粒子数量
     */

    private long particleCount;

    /**
     * 微粒子百分比
     */

    private float particlePercent;

    /**
     * 烟雾粒子数
     */

    private long smokeCount;

    /**
     * 烟雾百分比
     */

    private float smokePercent;


    /**
     * 6-16
     * 上报标志
     */
    @Column(nullable = true, columnDefinition = "TINYINT default 0")
    private Integer reportStatus;

}
